package com.yuwen.service.impl;

import com.yuwen.mapper.DataMapper;
import com.yuwen.pojo.Data;
import com.yuwen.service.DataService;
import com.yuwen.utils.ImportExcelUtils;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.io.InputStream;
import java.util.List;

@Service("AdminService")
public class DataServicelmpl implements DataService {
    @Resource
    DataMapper dataMapper;

    @Resource
    ImportExcelUtils excelUtils;

    /**
     * 批量添加数据
     * @param dataList 数据信息
     * @return 数据是否添加成功
     */
    @Override
    public boolean addBatchData(List<Data> dataList) {
        return dataMapper.addBatchData(dataList)>0;
    }
    /**
     * 根据id查看数据是否存在
     * @param id 数据id
     * @return 查询到的数据信息
     */
    @Override
    public Data findDataById(Long id) {
        return dataMapper.findDataById(id);
    }

    /**
     * 根据用户账号修改用户信息
     * @param data 用户信息
     * @return 是否修改成功
     */
    @Override
    public boolean updateDataById(Data data) {
        return dataMapper.updateDataById(data) > 0;
    }
    /**
     * 批量导入用户信息
     * @param fileName 导入的表名
     * @param is 导入表的输入流
     * @return 是否导入成功
     */

    @Override
    public boolean importDataInfo(String fileName, InputStream is){
        try {
            List<Data> dataList = excelUtils.upload(fileName,is);
            for (int i = 0; i < dataList.size(); i++) {
                Data data = findDataById(dataList.get(i).getId()); // 查找数据库中看这个用户信息是否存在
                if (data != null){
                    updateDataById(dataList.get(i)); // 更新数据库中的用户信息
                    dataList.remove(i); // 移除更新后的用户
                    i = i - 1; // 因为移除了，所以userList大小减了一而循环加了一，所以要减回去
                }
            }
            return addBatchData(dataList); // 批量添加
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }



    //=================================================================================
    @Override
    public List<Data> queryAll(){
        return dataMapper.queryAll();
    }
    @Override
    public void removeAll(){
        dataMapper.deleteAll();
    }
    @Override
    public boolean remove(Long id){
        return dataMapper.deleteOneData(id)>0;
    }
    @Override
    public boolean add(Data data){
        return dataMapper.insertOneData(data)>0;
    }
    @Override
    public Data query(Long id){
        return dataMapper.query(id);
    }

    @Override
    public boolean update(Data data){
        return dataMapper.updateData(data)>0;
    }
    @Override
    public List<Data> findDataByY(double y){
        return dataMapper.findDataByY(y);
    }


}
